package com.java.interface_implements;

/**
 * 接口 - 子类
 */
public class Child extends Parent {
    @Override
    public void grandInterfaceFunc() {
        System.out.println("子类中提供抽象方法的具体实现");
    }
    
    public static void main(String[] args) {
        // 接口无构造函数，不能实例化new接口，可使用匿名内部类写法
        // GrandA grandA = new GrandA();
        GrandA grandA = new GrandA() {
            @Override
            public void grandInterfaceFunc() {}
            
            @Override
            public void grandAInterfaceDefaultFunc() {
                System.out.println("匿名内部类覆盖默认方法体");
            }
        };
        grandA.grandAInterfaceDefaultFunc(); // 匿名内部类覆盖默认方法体
        
        Child child = new Child();
        System.out.println(child.NAME); // grand
        child.grandInterfaceFunc(); // 子类中提供抽象方法的具体实现
        child.grandAInterfaceDefaultFunc(); // 祖先成员方法的默认方法体
        
        // 只能在包含接口类时调用 static 方法
        // Child.staticInterfaceFunc();
        // Parent.staticInterfaceFunc();
        GrandA.staticInterfaceFunc(); // 祖先静态成员方法
    }
}
